package ma.ensao.egicom.bank.services.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;

import org.scub.foundation.framework.core.model.BaseModel;

/**
 * Entit&eacute; persistante modilisant l'utilisateur d'un compte.
 * @author MILHI Yassine (milhi.yassinee@gmail.com)
 */
@Entity
@Table(name = "client")
public class Client extends BaseModel {


    private static final long serialVersionUID = -4964342024973378196L;

    @Column(nullable = false)
    private String firstName;

    @Column(nullable = false)
    private String lastName;

    @Column(nullable = false)
    private String login;

    @Column(nullable = false)
    private String password;

    @Column(nullable = false)
    private String address;

    @Column(nullable = false)
    private String city;

    

    /**
     * {@inheritDoc}
     */
    @Override
    public boolean equals(Object other) {
        if (other == null || !(other instanceof Client)) {
            return false;
        }
        return equalsUtil(other);
    }

    @Override
    public int hashCode() {
        return super.hashCode();
    }

    /**
     * Retourne le nom de l'utilisateur.
     * @return le nom de l'utilisateur
     */
    public String getFirstName() {
        return firstName;
    }

    /**
     * Modifie le nom de l'utilisateur.
     * @param firstName le nom de l'utilisateur
     */
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    /**
     * Retourne le pr&eacute;nom de l'utilisateur.
     * @return le pr&eacute;nom de l'utilisateur
     */
    public String getLastName() {
        return lastName;
    }

    /**
     * Modifie le pr&eacute;nom de l'utilisateur.
     * @param lastName le pr&eacute;nom de l'utilisateur
     */
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    /**
     * Retourne le login de connexion.
     * @return le login de connexion
     */
    public String getLogin() {
        return login;
    }

    /**
     * Modifie le login de connexion.
     * @param login le login de connexion
     */
    public void setLogin(String login) {
        this.login = login;
    }

    /**
     * Retourne le mot de passe de connexion.
     * @return le mot de passe de connexion
     */
    public String getPassword() {
        return password;
    }

    /**
     * Modifie le mot de passe de connexion.
     * @param password le mot de passe de connexion
     */
    public void setPassword(String password) {
        this.password = password;
    }

    /**
     * Retourne l'adresse de l'utilisateur.
     * @return l'adresse de l'utilisateur
     */
    public String getAddress() {
        return address;
    }

    /**
     * Modifie l'adresse de l'utilisateur.
     * @param address l'adresse de l'utilisateur
     */
    public void setAddress(String address) {
        this.address = address;
    }

    /**
     * Retourne la ville de r&eacute;sidence de l'utilisateur.
     * @return la ville de r&eacute;sidence de l'utilisateur
     */
    public String getCity() {
        return city;
    }

    /**
     * Modifie la ville de r&eacute;sidence de l'utilisateur.
     * @param city la ville de r&eacute;sidence de l'utilisateur
     */
    public void setCity(String city) {
        this.city = city;
    }
}
